package com.imooc.maokeyang.alllearning.config;

import com.imooc.maokeyang.alllearning.interceptor.RateLimitInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.*;

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Autowired
    private RateLimitInterceptor rateLimitInterceptor;


    /**
     * 向web中添加拦截器
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(rateLimitInterceptor)
                .addPathPatterns("/api/**");
    }


    /**
     * 不走拦截器的地址 配置
     *
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {

        // Swagger2做的映射
        registry.addResourceHandler("/swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }


//    /**
//     * 跨域解决
//     * http://www.iocoder.cn/Spring-Boot/SpringMVC/?github
//     *
//     * @param registry
//     */
//    @Override
//    public void addCorsMappings(CorsRegistry registry) {
//        // 添加全局的 CORS 配置
//        registry.addMapping("/**") // 匹配所有 URL ，相当于全局配置
//                .allowedOrigins("*") // 允许所有请求来源
//                .allowCredentials(true) // 允许发送 Cookie
//                .allowedMethods("*") // 允许所有请求 Method
//                .allowedHeaders("*") // 允许所有请求 Header
////                .exposedHeaders("*") // 允许所有响应 Header
//                .maxAge(1800L); // 有效期 1800 秒，2 小时
//    }


    /**
     * swagger-ui.html路径映射，浏览器中使用/api-docs访问
     * @param registry
     */
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addRedirectViewController("/api-docs","/swagger-ui.html");
    }
}
